package com.cskaoyan.javase.oop1._14import.one;

/**
 * 作为测试类
 *
 * 如果不做额外操作,直接去使用一个类(简单类名),那么只可能从同包下去找这个类,有两种可能性:
 *      1.找到了,能用
 *      2.找不到,编译报错,没有这个类,用不了
 * 因为同包下不存在同名类,所以在同包下去找一个类,是必定唯一的,只有两种可能性,要么就存在,要么就不存在的
 * 但是不同包下,完全有可能出现同名类,一旦出现同名类,这时用简单类名是无法区分的
 * 所以在使用简单类名,不做任何其它操作的情况下,就只能访问和使用同包下的类
 *
 * 那么如果想要使用不同包下的类,简单类名就不能满足需求了,就需要一些额外的操作了:
 *      1.不用简单类名,而是用全限定类名(但是它很麻烦,尽量不要用这种方式)
 *      2.(推荐)使用import关键字进行导包操作,相当于把全限定类名中的包名写在导包语句中,然后在代码中仍然可以继续使用简单类名
 *      语法:
 *      import 要使用的某个类的全限定类名;
 *      位置:
 *      放在package声明的下面,有效代码的上面,一般来说紧跟package声明就可以了
 *
 * 注意事项:
 *      1.idea拥有自动的导包功能,我们日常使用时,只需要不导错包就可以了.
 *      2.使用不同包下的类时,建议优先考虑导包,尽量不要用全限定类名
 *          全限定类名只有在你需要同时使用两个不同包下的同名类时才使用.
 *
 *      3.像String、System、Math等常用类很明显不是同包下的类，但我们并没有进行导包操作。
 *      这是因为在Java当中的，"java.lang包"是Java的核心类包，具有隐式的导包。
 *      注意"java.lang包"下的所有类，是隐式的导入了每个Java类，而不是没有导入！
 *
 * @since 11:02
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        /*// 1.如果不做任何操作,直接创建Student对象,创建的是哪个包下的?
        Student s = new Student();
        s.test();

        // 2.使用全限定类名来使用不同包下的类
        com.cskaoyan.javase.oop1._14import.two.Student s2 = new com.cskaoyan.javase.oop1._14import.two.Student();
        s2.test();*/

        /*Student s3 = new Student();
        s3.test();*/

        // 需求: 要求同时使用one包和two包下的两个Student类
        Student s4 = new Student();
        s4.test();

        com.cskaoyan.javase.oop1._14import.two.Student s5 = new com.cskaoyan.javase.oop1._14import.two.Student();
        s5.test();
    }
}
